﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess;
using System.Data.OracleClient;
using EntitiesLayer.Entities;
using System.Data;

namespace DataLayer.DAO
{
    public class PacientesDAO
    {
        private Connection.Connection cn;
        private OracleConnection objCn;

        public PacientesDAO()
        {
            cn = new Connection.Connection();
            objCn = cn.Conecta();
        }

        public List<Pacientes> buscarPacientes(string apellido, string nombre)
        {
            List<Pacientes> lstObject = new List<Pacientes>();

            try
            {
                OracleCommand cmd = new OracleCommand("BUSCARPACIENTECRITERIO", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OracleParameter("RECORDSET", OracleType.Cursor, 100, ParameterDirection.Output, null, DataRowVersion.Current, false, null));
                cmd.Parameters.Add(new OracleParameter("v_apellido", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, apellido.Trim().ToLower()));
                cmd.Parameters.Add(new OracleParameter("v_nombre", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, nombre.Trim().ToLower()));               
                using (IDataReader oRead = cmd.ExecuteReader(CommandBehavior.SingleResult))
                {
                    if (oRead != null)
                    {
                        while (oRead.Read())
                        {
                            Pacientes oPacientes = new Pacientes();

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_HHCC")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_HHCC")).ToString()))
                                {
                                    oPacientes.VPAC_HHCC = oRead.GetString(oRead.GetOrdinal("VPAC_HHCC"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("IPAC_NRO_DOCUMENTO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("IPAC_NRO_DOCUMENTO")).ToString()))
                                {
                                    oPacientes.IPAC_NRO_DOCUMENTO = oRead.GetString(oRead.GetOrdinal("IPAC_NRO_DOCUMENTO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_APELLIDOS")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_APELLIDOS")).ToString()))
                                {
                                    oPacientes.VPAC_APELLIDOS = oRead.GetString(oRead.GetOrdinal("VPAC_APELLIDOS"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_NOMBRES")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_NOMBRES")).ToString()))
                                {
                                    oPacientes.VPAC_NOMBRES = oRead.GetString(oRead.GetOrdinal("VPAC_NOMBRES"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_EMAIL")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_EMAIL")).ToString()))
                                {
                                    oPacientes.VPAC_EMAIL = oRead.GetString(oRead.GetOrdinal("VPAC_EMAIL"));
                                }
                            }


                            if (!oRead.IsDBNull(oRead.GetOrdinal("DPAC_NACIMIENTO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetDateTime(oRead.GetOrdinal("DPAC_NACIMIENTO")).ToString()))
                                {
                                    oPacientes.DPAC_NACIMIENTO = oRead.GetDateTime(oRead.GetOrdinal("DPAC_NACIMIENTO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_TELEF_FIJO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_TELEF_FIJO")).ToString()))
                                {
                                    oPacientes.VPAC_TELEF_FIJO = oRead.GetString(oRead.GetOrdinal("VPAC_TELEF_FIJO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_CELULAR")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_CELULAR")).ToString()))
                                {
                                    oPacientes.VPAC_CELULAR = oRead.GetString(oRead.GetOrdinal("VPAC_CELULAR"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_DIRECCION")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_DIRECCION")).ToString()))
                                {
                                    oPacientes.VPAC_DIRECCION = oRead.GetString(oRead.GetOrdinal("VPAC_DIRECCION"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VPAC_CENTRO_TRABAJO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VPAC_CENTRO_TRABAJO")).ToString()))
                                {
                                    oPacientes.VPAC_CENTRO_TRABAJO = oRead.GetString(oRead.GetOrdinal("VPAC_CENTRO_TRABAJO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Sexo")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Sexo")).ToString()))
                                {
                                    oPacientes.VPAC_SEXO = oRead.GetString(oRead.GetOrdinal("Vpac_Sexo"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vtips_Cod_Tipo_Seguro")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vtips_Cod_Tipo_Seguro")).ToString()))
                                {
                                    oPacientes.VTIPS_COD_TIPO_SEGURO = oRead.GetString(oRead.GetOrdinal("Vtips_Cod_Tipo_Seguro"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Cod_Iafa")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Cod_Iafa")).ToString()))
                                {
                                    oPacientes.VPAC_COD_IAFA = oRead.GetString(oRead.GetOrdinal("Vpac_Cod_Iafa"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("IPAC_NRO_HAB_HOSP")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetInt32(oRead.GetOrdinal("IPAC_NRO_HAB_HOSP")).ToString()))
                                {
                                    oPacientes.IPAC_NRO_HAB_HOSP = oRead.GetInt32(oRead.GetOrdinal("IPAC_NRO_HAB_HOSP"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vdoc_Cod_Tip_Doc")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vdoc_Cod_Tip_Doc")).ToString()))
                                {
                                    oPacientes.VDOC_COD_TIP_DOC = oRead.GetString(oRead.GetOrdinal("Vdoc_Cod_Tip_Doc"));
                                }
                            }

                            lstObject.Add(oPacientes);
                            oPacientes = null;
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {

                if (objCn != null)
                {
                    objCn.Close();
                }

            }

            return lstObject;

        }


        public List<Pacientes> GetAllPaciente(string Txthhcc)
        {
            List<Pacientes> lstObject = new List<Pacientes>();

            try
            {
                OracleCommand cmd = new OracleCommand("RECUPERARCLIENTES", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OracleParameter("Recordset", OracleType.Cursor, 100, ParameterDirection.Output, null, DataRowVersion.Current, false, null));
                cmd.Parameters.Add(new OracleParameter("Rpac_Hhcc", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, Txthhcc));
                 using (IDataReader oRead = cmd.ExecuteReader(CommandBehavior.SingleResult))
                {
                    if (oRead != null)
                    {
                        while (oRead.Read())
                        {
                            Pacientes oPacientes = new Pacientes();

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Hhcc")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Hhcc")).ToString()))
                                {
                                    oPacientes.VPAC_HHCC = oRead.GetString(oRead.GetOrdinal("Vpac_Hhcc"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Apellidos")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Apellidos")).ToString()))
                                {
                                    oPacientes.VPAC_APELLIDOS = oRead.GetString(oRead.GetOrdinal("Vpac_Apellidos"));
                                }
                            }

                            
                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Nombres")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Nombres")).ToString()))
                                {
                                    oPacientes.VPAC_NOMBRES = oRead.GetString(oRead.GetOrdinal("Vpac_Nombres"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Ipac_Nro_Documento")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Ipac_Nro_Documento")).ToString()))
                                {
                                    oPacientes.IPAC_NRO_DOCUMENTO = oRead.GetString(oRead.GetOrdinal("Ipac_Nro_Documento"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Telef_Fijo")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Telef_Fijo")).ToString()))
                                {
                                    oPacientes.VPAC_TELEF_FIJO = oRead.GetString(oRead.GetOrdinal("Vpac_Telef_Fijo"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Celular")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Celular")).ToString()))
                                {
                                    oPacientes.VPAC_CELULAR = oRead.GetString(oRead.GetOrdinal("Vpac_Celular"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Email")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Email")).ToString()))
                                {
                                    oPacientes.VPAC_EMAIL = oRead.GetString(oRead.GetOrdinal("Vpac_Email"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Direccion")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Direccion")).ToString()))
                                {
                                    oPacientes.VPAC_DIRECCION = oRead.GetString(oRead.GetOrdinal("Vpac_Direccion"));
                                }
                            }


                            if (!oRead.IsDBNull(oRead.GetOrdinal("DPAC_NACIMIENTO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetDateTime(oRead.GetOrdinal("DPAC_NACIMIENTO")).ToString()))
                                {
                                    oPacientes.DPAC_NACIMIENTO = oRead.GetDateTime(oRead.GetOrdinal("DPAC_NACIMIENTO"));
                                }
                            }

                            
                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Centro_Trabajo")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Centro_Trabajo")).ToString()))
                                {
                                    oPacientes.VPAC_CENTRO_TRABAJO = oRead.GetString(oRead.GetOrdinal("Vpac_Centro_Trabajo"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Dpac_Fec_Ing_Hosp")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetDateTime(oRead.GetOrdinal("Dpac_Fec_Ing_Hosp")).ToString()))
                                {
                                    oPacientes.DPAC_FEC_ING_HOSP = oRead.GetDateTime(oRead.GetOrdinal("Dpac_Fec_Ing_Hosp"));
                                }
                            }

                            
                            if (!oRead.IsDBNull(oRead.GetOrdinal("Ipac_Nro_Hab_Hosp")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetInt32(oRead.GetOrdinal("Ipac_Nro_Hab_Hosp")).ToString()))
                                {
                                    oPacientes.IPAC_NRO_HAB_HOSP = oRead.GetInt32(oRead.GetOrdinal("Ipac_Nro_Hab_Hosp"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Cod_Tipo_Paciente")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetInt32(oRead.GetOrdinal("Vpac_Cod_Tipo_Paciente")).ToString()))
                                {
                                    oPacientes.VPAC_COD_TIPO_PACIENTE = oRead.GetInt32(oRead.GetOrdinal("Vpac_Cod_Tipo_Paciente"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vrec_Cod_Rec")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vrec_Cod_Rec")).ToString()))
                                {
                                    oPacientes.VREC_COD_REC = oRead.GetString(oRead.GetOrdinal("Vrec_Cod_Rec"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vdoc_Cod_Tip_Doc")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vdoc_Cod_Tip_Doc")).ToString()))
                                {
                                    oPacientes.VDOC_COD_TIP_DOC = oRead.GetString(oRead.GetOrdinal("Vdoc_Cod_Tip_Doc"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vubi_Cod_Ubi")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vubi_Cod_Ubi")).ToString()))
                                {
                                    oPacientes.VUBI_COD_UBI = oRead.GetString(oRead.GetOrdinal("Vubi_Cod_Ubi"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vseg_Cod_Cia_Seg")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vseg_Cod_Cia_Seg")).ToString()))
                                {
                                    oPacientes.VSEG_COD_CIA_SEG = oRead.GetString(oRead.GetOrdinal("Vseg_Cod_Cia_Seg"));
                                }
                            }

                            
                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Sexo")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Sexo")).ToString()))
                                {
                                    oPacientes.VPAC_SEXO = oRead.GetString(oRead.GetOrdinal("Vpac_Sexo"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vtips_Cod_Tipo_Seguro")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vtips_Cod_Tipo_Seguro")).ToString()))
                                {
                                    oPacientes.VTIPS_COD_TIPO_SEGURO = oRead.GetString(oRead.GetOrdinal("Vtips_Cod_Tipo_Seguro"));
                                }
                            }
                            
                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vpac_Cod_Iafa")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vpac_Cod_Iafa")).ToString()))
                                {
                                    oPacientes.VPAC_COD_IAFA = oRead.GetString(oRead.GetOrdinal("Vpac_Cod_Iafa"));
                                }
                            }


                            lstObject.Add(oPacientes);
                            oPacientes = null;
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {

                if (objCn != null)
                {
                    objCn.Close();
                }

            }

            return lstObject;

        }

        //public Pacientes GetAllPaciente(string Txthhcc)
        //{
        //    Pacientes p = new Pacientes();

        //    using (OracleCommand cmd = new OracleCommand("RECUPERAR", objCn))
        //    {
        //        cmd.CommandType = CommandType.StoredProcedure;

        //        OracleParameter refParameter = new OracleParameter();
        //        refParameter.ParameterName = "RECORDSET";
        //        refParameter.OracleType = OracleType.Cursor;
        //        refParameter.Direction = ParameterDirection.Output;

        //        OracleParameter idParameter = new OracleParameter();
        //        idParameter.ParameterName = "ID_PACI";
        //        idParameter.OracleType = OracleType.NVarChar;
        //        idParameter.Size = 50;
        //        idParameter.Direction = ParameterDirection.Input;
        //        idParameter.Value = Txthhcc;

        //        cmd.Parameters.Add(refParameter);
        //        cmd.Parameters.Add(idParameter);

        //        try
        //        {
        //            objCn.Open();

        //            OracleDataReader dr = cmd.ExecuteReader();

        //            while (dr.Read())
        //            {
 
        //                p.VPAC_APELLIDOS = dr.GetString(dr.GetOrdinal("VPAC_APELLIDOS"));
        //                p.VPAC_NOMBRES = dr.GetString(dr.GetOrdinal("VPAC_NOMBRES"));
        //                p.IPAC_NRO_DOCUMENTO = dr.GetString(dr.GetOrdinal("IPAC_NRO_DOCUMENTO"));
        //                p.VPAC_TELEF_FIJO = dr.GetString(dr.GetOrdinal("VPAC_TELEF_FIJO"));
        //                p.VPAC_CELULAR = dr.GetString(dr.GetOrdinal("VPAC_CELULAR"));
        //                p.VPAC_EMAIL = dr.GetString(dr.GetOrdinal("VPAC_EMAIL"));
        //                p.VPAC_DIRECCION = dr.GetString(dr.GetOrdinal("VPAC_DIRECCION"));
        //                p.IPAC_EDAD = Convert.ToInt32(dr.GetString(dr.GetOrdinal("IPAC_EDAD")));
        //                p.VPAC_CENTRO_TRABAJO = dr.GetString(dr.GetOrdinal("VPAC_CENTRO_TRABAJO"));
        //                p.VPAC_SEXO = dr.GetString(dr.GetOrdinal("VPAC_SEXO"));
        //                p.VTIPS_COD_TIPO_SEGURO = dr.GetString(dr.GetOrdinal("VTIPS_COD_TIPO_SEGURO"));
        //                p.VPAC_COD_IAFA = dr.GetString(dr.GetOrdinal("VPAC_COD_IAFA"));
        //                p.IPAC_NRO_HAB_HOSP = Convert.ToInt32(dr.GetString(dr.GetOrdinal("IPAC_NRO_HAB_HOSP")));
        //                p.VDOC_COD_TIP_DOC = dr.GetString(dr.GetOrdinal("VDOC_COD_TIP_DOC"));
        //            }
        //        }
        //        catch (Exception ex)
        //        {
        //            objCn.Dispose();
        //        }
        //        finally
        //        {
        //            objCn.Close();
        //        }
        //    }
        //    return p;
        //}
        }
    }
